﻿using BCCommon;
using BCDto.Sim.Admin.Admin;
using BCDto.TMS.TrainingSite.TrainingSiteConfig;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BCService.TMS.TrainingSite.TrainingSiteConfig
{
    /// <summary>
    /// 培训点配置
    /// </summary>
    public interface ITrainingSiteConfigService
    {
        /// <summary>
        /// 添加培训点配置
        /// </summary>
        /// <param name="admin">管理员信息</param>
        /// <param name="dto">培训点配置请求信息模型</param>
        /// <returns></returns>
        TrainingSiteConfigDto Add(AdminDto admin, TrainingSiteConfigRequestDto dto);

        /// <summary>
        /// 修改培训点配置
        /// </summary>
        /// <param name="admin">管理员信息</param>
        /// <param name="trainingSiteConfigId">培训点配置ID</param>
        /// <param name="dto">培训点配置修改信息模型</param>
        /// <returns></returns>
        TrainingSiteConfigDto Update(AdminDto admin, long trainingSiteConfigId, TrainingSiteConfigPutDto dto);

        /// <summary>
        /// 删除培训点配置
        /// </summary>
        /// <param name="admin">管理员信息</param>
        /// <param name="trainingSiteConfigId">培训点配置ID</param>
        void Delete(AdminDto admin, long trainingSiteConfigId);

        /// <summary>
        /// 获取一条培训点配置信息
        /// </summary>
        /// <param name="trainingSiteConfigId">培训点配置ID</param>
        /// <returns></returns>
        TrainingSiteConfigDto GetById(long trainingSiteConfigId);

        /// <summary>
        /// 获取培训点配置
        /// </summary>
        /// <param name="admin">管理员信息</param>
        /// <param name="trainingSiteName">培训点名称</param>
        /// <param name="provinceCode">省编码</param>
        /// <param name="cityCode">市编码</param>
        /// <param name="countyCode">区县编码</param>
        /// <param name="phone">联系电话</param>
        /// <param name="pageIndex">页号</param>
        /// <param name="pageSize">每页数据条数</param>
        /// <returns></returns>
        PageableList<TrainingSiteConfigDto> Query(AdminDto admin, string trainingSiteName, string provinceCode, string cityCode, string countyCode, string phone, int pageIndex, int pageSize);

        /// <summary>
        /// 获取培训点配置列表
        /// </summary>
        /// <param name="agentRecordId">代理商ID</param>
        /// <param name="countyCode">区县编码</param>
        /// <returns></returns>
        IEnumerable<TrainingSiteConfigDto> GetList(long? agentRecordId, string countyCode);
    }
}
